#ifndef KW_H
#define KW_H

#include "bolt.h"

#include "seg.h"

struct kw *create_kw();
void destroy_kw();

struct kw *kw_sib(struct kw *kw);
struct kw * kw_son(struct kw *kw);
const char *kw_help(struct kw *kw);
int kw_is_input(struct kw *kw);
int kw_executable(struct kw *kw);
int kw_match(struct kw *kw, const char *s, int len);
void kw_sib_table(struct kw *kw);
void kw_son_table(struct kw *kw);
void kw_own_table(struct kw *kw, const char *s);
void kw_show_sib(struct kw *kw);
void kw_set_sib(struct kw *kw, struct kw *sib);
void kw_show_son(struct kw *kw);
void kw_execute(struct kw *kw, const char *buf, struct seg_list *args);

void pool_free(struct kw *kw);
struct kw *pool_alloc(void);
void pool_init(void);

void init_kw(void);

#endif

